/*
 * Copyright (c) 2012 SUBSECRETARIA DEFENSORIA DEL ESPACIO PUBLICO - SDEP.
 * All Rights Reserved.
 * This software is the confidential and proprietary information of SDEP
 * Developed By CONSTULT-SOFT S.A, Development Team 2012.
 *
 */
package co.gov.medellin.sdep.sisdep.domain.regulacion;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import javax.faces.model.SelectItem;

import co.gov.medellin.sdep.sisdep.common.AppConstants;
import co.gov.medellin.sdep.sisdep.common.enums.SellerReportTypeEnum;
import co.gov.medellin.sdep.sisdep.domain.BaseController;
import co.gov.medellin.sdep.sisdep.domain.MessageModalWindowController;

/**
 * <p>
 * Clase controladora que permite realizar el proceso de configuracion de disenos de Modulos.
 * Permite al usuario realizar operaciones de consulta, creacion y actualizacion de registros.
 * </p>
 * <p>
 * Copyright (c) 2012<BR>
 * Consult-Soft S.A.<BR>
 * Created on: Jun 14, 2012<BR>
 * 
 * @author atabares
 * </p>
 */
public class ReporteRegulacionController extends BaseController implements Serializable {
	
	/** generated serial version. */
	private static final long serialVersionUID = -3769270821962100239L;
	
	/** Lista de valores asociados al tipo de reporte de comerciante - (SellerReportTypeEnum). */
	private List sellerReportTypeList;
	
	/** Tipo de reporte seleccionado. */
	private String reportType;
	
	/** Rango de fecha inicial para la generacion del reporte. */
	private String initDate;
	
	/** Rango de fecha final para la generacion del reporte. */
	private String endDate;

	/** Coleccion que contiene un unico elemento y que sera usada en la construccion del archivo PDF. */
	private Collection reportCollection = new ArrayList();

	
	/**
	 * Constructor por defecto, inicializa los elemento basicos del Controlador
	 */
	public ReporteRegulacionController() {
	}
	
	/**
	* Obtiene el parametro sellerReportTypeList.
	* @see ReporteRegulacionController#sellerReportTypeList
	*
	* @return El parametro sellerReportTypeList.
	*/
	public List getSellerReportTypeList() {
		if (sellerReportTypeList == null) {
			sellerReportTypeList = new ArrayList();
			
			try {
				Iterator iter = SellerReportTypeEnum.VALUES.iterator();
				
				while (iter.hasNext()) {
					SellerReportTypeEnum sellerReportTypeEnum = (SellerReportTypeEnum) iter.next();
					
					sellerReportTypeList.add(new SelectItem(sellerReportTypeEnum.toString(), sellerReportTypeEnum.toString()));
				}
			} catch (Exception e) {
				e.printStackTrace(System.err);

				((MessageModalWindowController) getBean(AppConstants.MESSAGE_CONTROLLER_BEAN))
						.setErrorMessage(AppConstants.DEFAULT_ERROR + e.getMessage(), null, null);
			}
		}
		
		return sellerReportTypeList;
	}

	/**
	* Asigna el parametro sellerReportTypeList.
	* @see ReporteRegulacionController#sellerReportTypeList
	*
	* @param sellerReportTypeList valor a asignar al parametro sellerReportTypeList.
	*/
	public void setSellerReportTypeList(List sellerReportTypeList) {
		this.sellerReportTypeList = sellerReportTypeList;
	}

	/**
	* Obtiene el parametro reportType.
	* @see ReporteRegulacionController#reportType
	*
	* @return El parametro reportType.
	*/
	public String getReportType() {
		return reportType;
	}

	/**
	* Asigna el parametro reportType.
	* @see ReporteRegulacionController#reportType
	*
	* @param reportType valor a asignar al parametro reportType.
	*/
	public void setReportType(String reportType) {
		this.reportType = reportType;
	}

	/**
	* Obtiene el parametro initDate.
	* @see ReporteRegulacionController#initDate
	*
	* @return El parametro initDate.
	*/
	public String getInitDate() {
		return initDate;
	}

	/**
	* Asigna el parametro initDate.
	* @see ReporteRegulacionController#initDate
	*
	* @param initDate valor a asignar al parametro initDate.
	*/
	public void setInitDate(String initDate) {
		this.initDate = initDate;
	}

	/**
	* Obtiene el parametro endDate.
	* @see ReporteRegulacionController#endDate
	*
	* @return El parametro endDate.
	*/
	public String getEndDate() {
		return endDate;
	}

	/**
	* Asigna el parametro endDate.
	* @see ReporteRegulacionController#endDate
	*
	* @param endDate valor a asignar al parametro endDate.
	*/
	public void setEndDate(String endDate) {
		this.endDate = endDate;
	}

	/**
	 * Obtiene el parametro reportCollection.
	 * @see ReporteRegulacionController#reportCollection
	 *
	 * @return El parametro reportCollection.
	 */
	public Collection getReportCollection() {
		return reportCollection;
	}

	/**
	 * Asigna el parametro reportCollection.
	 * @see ReporteRegulacionController#reportCollection
	 *
	 * @param reportCollection valor a asignar al parametro reportCollection.
	 */
	public void setReportCollection(Collection reportCollection) {
		this.reportCollection = reportCollection;
	}

	/**
     * Carga en sesion la informacion de los parametros de busqueda y genera un
     * archivo con los registros consultados de Comerciantes para exportar a
     * formato PDF.
     */
    public void generatePDFReport() {
    	
		
    }
}
